社区
C语言
帖子详情
unsigned char 移位
shenmou
2007-05-10 11:48:59
unsigned char valChar;
unsigned int valInt;
valChar = 0x01;
valInt = valChar << 16
;;得到结果 valInt = 0x00010000;
安照道理,是不是valChar 移位的时候回溢出的。
...全文
497
7
打赏
收藏
unsigned char 移位
unsigned char valChar; unsigned int valInt; valChar = 0x01; valInt = valChar << 16 ;;得到结果 valInt = 0x00010000; 安照道理,是不是valChar 移位的时候回溢出的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Michael_555
2007-05-10
打赏
举报
回复
valChar = 0x01;
valInt = valChar << 16
楼主是用VC、Dev-C++之类的32位的编程工具测试的吧, 因为他们的int为32位的。
如果换成TC2.0的之类的DOS平台编程工具,valInt就会等于0了
0黄瓜0
2007-05-10
打赏
举报
回复
C\C++中的移位运算都会转为unsigned int然后再移.
jixingzhong
2007-05-10
打赏
举报
回复
中间结果不是 unsigned char
eggqq007
2007-05-10
打赏
举报
回复
移位是不会造成溢出的。
yoyo_alex_lw
2007-05-10
打赏
举报
回复
兄弟,移位怎么会溢出呢?比如0x01,右移n(n>0)位,结果总是0x00.实在不懂,就看看汇编书
shenmou
2007-05-10
打赏
举报
回复
是我的问题没有表达清楚, 想要问的是 标准c 对这个有没有定义?
移位运算 中间结果转换为 int 有定义么?
yoyo_alex_lw
2007-05-10
打赏
举报
回复
我用vs2005做了一些测试.用sizeof(c<<n),sizeof(c>>n),无论n为何整数,size都是4,即4个字节,也就是说,c/c++语言在移位时,首先将数据转为32位数,经测试,32位数以补码形式存储.对于左移,无论被移位数是正数还是负数,末位都以0填充;如果是右移位,那么,正数移位时,高位以0填充,负数以1填充.移位数量以32求模后得到的数作为最终移位数量.以上结论都做过测试.
c语言
unsigned
char
相当于byte,那么如何使用呢,我们进行
移位
1,首先我们用的IDE是codeblock, 2,注意printf中打印整型,%d表示的是有符号的整型,%u表示的才是无符号的整型, 3,在java和c#中有byte这个数据类型,但是在c中是没有的,我们一般用
unsigned
char
来替换,byte,而且实际是可以的。 下边我们测试一下
移位
操作的真正的含义, 测试1:
unsigned
int getkey(
unsigned
char
*seedData){
unsigned
int seedX; seedX=(seedData[0] << 3
char
与
unsigned
char
char
与
unsigned
char
char
与
unsigned
char
1、两个不同的数据类型; 2、取值范围完全相同,都是二进制的00000000-11111111, 也就是十六进制的00-FF. 长度都是1字节。所谓取值范围不同的理解只是因为他们是两个不同的数据类型,所以转换成十进制才会有不同的结果。正因为他们是两个不同...
【转】vC++中
char
与
unsigned
char
(BYTE)的具体区别
http://zhongliyuan88.blog.163.com/blog/static/793788192008923113528787/
vC++中
char
与
unsigned
char
(BYTE)的具体区别?
理论知识2008-10-23 11:35:28阅读2272评论1 字号:大中小 订阅
typedef
unsigned
char
BYTE; windef.h文件中定义
char
与
unsigned
ch
C语言中的
移位
操作
1、什么样的数据类型可以直接
移位
char
、short、int、long、
unsigned
char
、
unsigned
short、
unsigned
int、
unsigned
long都可以进行
移位
操作,而double、float、bool、long double则不可以进行
移位
操作。 2、有符号数据类型的
移位
操作 对于
char
、short、int、long这些有符号的
vC++中
char
与
unsigned
char
(BYTE)的具体区别
typedef
unsigned
char
BYTE; windef.h文件中定义
char
与
unsigned
char
是两个不同的数据类型, 取值范围完全相同,都是二进制的00000000-11111111, 也就是十六进制的00-FF. 长度都是1字节。 所谓取值范围不同的理解只是因为他们是两个不同的数据类型,所以转换成十进制才会有不同的结果。 正因为他们是两个不
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章