位运算

loveqise 2016-11-16 03:10:56
进行位运算,用01为掩码计算输入整数的二进制数。01&n,n是输入的数。当为int类型时,在我的计算机上是32位数。当为longlong int类型时,是64位数。
掩码01是多少位数,宽度多少?如果宽度是32位,那超过2的31次方的数是不是就掩盖不住了?
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-17
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察! 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行! 不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!) VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
paschen 2016-11-16
  • 打赏
  • 举报
回复
引用 2 楼 loveqise 的回复:
[quote=引用 1楼fefe82 的回复:]1. 在 C 语言里,01 是一个八进制整型常量,值为 1,类型为 int 2. 在计算 01 & n 之前,会发生Usual arithmetic conversions,将两者转换为同一类型。n 也为 int ,那个两者都被转换为 int (不变);如果 n 为 long long int ,那个 01 也会被转换为 long long int 类型的 1 。
谢谢,Usual arthimetic conversions的转换规则是什么?1、是进行位运算时才会转换,还是所有运算都会转换2、同类型,如int是短整型转为长整型吗?3、不同类型,如int和char等怎么转换[/quote] 1、是的,会进行隐式转换 2、int在不同平台上可能是短/长整型,但同一个平台上不会同时是两种 3、char类型变量会转换成一个int的临时变量
  • 打赏
  • 举报
回复
隐式类型转化,在进行运算时,以表达式中最长类型为主,将其他类型位据均转换成该类型
loveqise 2016-11-16
  • 打赏
  • 举报
回复
引用 1楼fefe82 的回复:
1. 在 C 语言里,01 是一个八进制整型常量,值为 1,类型为 int 2. 在计算 01 & n 之前,会发生Usual arithmetic conversions,将两者转换为同一类型。n 也为 int ,那个两者都被转换为 int (不变);如果 n 为 long long int ,那个 01 也会被转换为 long long int 类型的 1 。
谢谢,Usual arthimetic conversions的转换规则是什么?1、是进行位运算时才会转换,还是所有运算都会转换2、同类型,如int是短整型转为长整型吗?3、不同类型,如int和char等怎么转换
fefe82 2016-11-16
  • 打赏
  • 举报
回复
1. 在 C 语言里,01 是一个八进制整型常量,值为 1,类型为 int 2. 在计算 01 & n 之前,会发生Usual arithmetic conversions,将两者转换为同一类型。n 也为 int ,那个两者都被转换为 int (不变);如果 n 为 long long int ,那个 01 也会被转换为 long long int 类型的 1 。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧