社区
C语言
帖子详情
unsigned char 移位
shenmou
2007-05-10 11:48:59
unsigned char valChar;
unsigned int valInt;
valChar = 0x01;
valInt = valChar << 16
;;得到结果 valInt = 0x00010000;
安照道理,是不是valChar 移位的时候回溢出的。
...全文
454
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求模后得到的数作为最终移位数量.以上结论都做过测试.
对偶反馈
移位
寄存器DSR
//by史瑞 //进动一拍输出一个字节ok
unsigned
char
DSR_MoveWord(
unsigned
char
*Const,
unsigned
char
*Array,
unsigned
long num){ int i,t;
unsigned
char
ch,Output=0x00; for(i=0;i<8;i++){ ch=(*Array)&0x80; t=ch?1:0; ch>>=i; Output^=ch; LeftShift(Array,Dig(num)); if(t) XorDSR(Array,Const,Dig(num)); } return Output; }
c51单片机流水灯-流水灯的实现,玩转流水灯
void heartSpark(
unsigned
int speed,
unsigned
char
n) {
unsigned
char
nCount = 16; //16次,完成一次流水灯动作
unsigned
char
i;
unsigned
int leftHeart; //P0-P1作为一组,由2字节的无符号整型变量
移位
实现流水灯,P0为低字节,P1为高字节
unsigned
int rightHeart; //P2-P3作为一组,由2字节的无符号整型变量
移位
实现流水灯,P2为低字节,P2为高字节 while(n--) { leftHeart=0xFFFF; //心灯熄灭 rightHeart=0xFFFF; //心灯熄灭 delayMS(speed); //延时1s for(i=0;i
16*16点阵用595和154做
595和154 #include #define BLKN 2 //列锁存器数 sbit G = 0x97; //P1.7为显示允许控制信号端口 sbit RCLK = 0x96; //P1.6为输出锁存器时钟信号端 sbit SCLR = 0x95; //P1.5为
移位
寄存器清○端 void delay(
unsigned
int); //延时函数
unsigned
char
data dispram[32]; //显示缓存 void main(void) {
unsigned
char
code Bmp[][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
C++ - "
unsigned
char
" 输出 "二进制数"
"
unsigned
char
" 输出 "binary number"
unsigned
char
是8位数字类型, 范围是0~255, 和图像像素范围相同, 在图像中应用较多. 当对
unsigned
char
进行
移位
运算之后, 如果想进行2进制输出, 检查结果, 可以使用以下代码: #include int main(){
unsigned
char
code = 255;
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章